package com.novunda.platform.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.novunda.platform.common.exception.ValidationErrorException;

/**
 * .
 * 功能说明：名称验证工具类
 * @author FJ
 * @see 2016年9月19日
 * @version 1.0
 */
public final class CheckNameUtil {
	/**
	 * . 构造器
	 */
	private CheckNameUtil() {

	}

    /**
     * .验证帐号名
     * 功能说明：
     *
     * @param name 名字
     * @return 验证结果 true符合，false不符合
     * @throws ValidationErrorException 
     */
    public static void checkUserNamePattern(String name) throws ValidationErrorException {
        Pattern pattern = Pattern.compile("[0-9a-zA-Z]{1,20}");
        Matcher matcher = pattern.matcher(name);
        if (!matcher.matches()) {
    		throw new ValidationErrorException("帐号名只能为长度20以内的英文、数字");
    	}
        if (("null").equalsIgnoreCase(name)
                || ("nill").equalsIgnoreCase(name)) {
			throw new ValidationErrorException("用户名不能为null或者nill");
		}
    }
    
    /**
     * .
     *功能说明：验证长度为20以内的英文中文数字名
     * @param name
     * @return
     * @throws ValidationErrorException 
     */
    public static void checkEnChNumTwentyPattern(String title, String name) throws ValidationErrorException {
    	Pattern pattern = Pattern.compile("[0-9a-zA-Z\u4e00-\u9fa5]{1,20}");
    	Matcher matcher = pattern.matcher(name);
    	if (!matcher.matches()) {
    		throw new ValidationErrorException(title + "只能为长度20以内的英文、数字、中文");
    	}
    }
    
    /**
     * .
     *功能说明：验证角色英文名
     * @param name
     * @return
     * @throws ValidationErrorException 
     */
    public static void checkRoleEnNamePattern(String name) throws ValidationErrorException {
    	Pattern pattern = Pattern.compile("[a-zA-Z]{1,20}");
    	Matcher matcher = pattern.matcher(name);
    	if (!matcher.matches()) {
    		throw new ValidationErrorException("角色英文名只能为长度20以内的英文");
    	}
    }
    
    /**
     * .
     *功能说明：验证机构名
     * @param name 机构名
     * @throws ValidationErrorException
     */
    public static void checkOrgNamePattern(String name) throws ValidationErrorException {
    	Pattern pattern = Pattern.compile("[a-zA-Z0-9\u4e00-\u9fa5]{1,40}");
    	Matcher matcher = pattern.matcher(name);
    	if (!matcher.matches()) {
    		throw new ValidationErrorException("机构名只能为长度40以内的数字、英文、中文");
    	}
    }
    
    /**
     * .
     *功能说明：验证名称不能为空
     * @param title 标题
     * @param name 名称
     * @throws ValidationErrorException
     */
    public static void checkNameIsNull(String title, String name) throws ValidationErrorException {
    	if (null == name || "".equals(name.trim())) {
    		throw new ValidationErrorException(title + "不能为空");
    	}
    }
}
